Overwatch heroes Lucio, Wrecking Ball and Soldier 76 in action

Overwatch heroes Lucio, Wrecking Ball and Soldier 76 in action


Introduction

Our dataset consists of information on competitive gamers who play the video game Overwatch on Playstation 4. Overwatch is a team-based multiplayer first-person shooter developed and published by Blizzard Entertainment. Overwatch assigns players into two teams of six, with each player selecting from a roster of 30 characters, known as “heroes”, each with a unique style of play whose roles are divided into three general categories that fit their role. Players on a team work together to secure and defend control points on a map or escort a payload across the map in a limited amount of time.

Overwatch has a large community and E-Sports presence online. Players’ skill in competitive games is calculated by a “secret” formula at Blizzard that leads to a “skill rating”, or “SR” for short. SR ranges from 0 to 5,000, the higher the score the better the player.

Among the community, SR is divided into categories depending on how high the rating is, ranging from Bronze to Grandmaster:

Gameplay

Overwatch pairs two teams up against each other in a match, or game. Each team has six members who must each choose a unique character, called a “hero”. More on that later. The goal is to damage the other team and help keep your team protected. In addition to damaging the other team’s players, the team has an “objective” to complete, which varies from map to map. A “map” here refers to a setting where a match takes place. The objective in Overwatch typically depends on members from one team being located in a specific area, refered to as the objective, while the other team isn’t in that same area. While in the objective area, your team accrues time spent on the objective. If your team accrues enough time, you win the match. It’s a little more complicated than this but that’s essentially it.

Holding down an objecitve area is where damaging your opponent comes in to play. When the other team tries to get on the objective at the same time as your team, you deal them damage to keep them away. Hopefully do enough that the opponent “dies”. But don’t worry, Overwatch is what’s called a “respawn” game. After a player “dies” from taking too much damage, they must wait a few seconds and then they rejoin the game and try again to take the objective from the other team.

Data

We scraped a snapshot of PS4 players’ SR (it changes from game to game) whose profiles were public on overwatchtracker.com. We then scraped players’ career statistics from the games that they’ve played from the open source API ovrstat.com which returns convenient JSON formatted data.

Currently we have over two thousand player skill ratings and over two thousand predictor variables. However, our research question will allow us to tailor our question to a small subset of the predictors, around 60 or so.

Research Question

Overall we’re interested in the question: if a player wants to improve their SR, what should they focus on? Should they try to eliminate more opponents? Heal their teammates? Or, play a certain character? Answers like these will be provided by a predictive model of SR using career player statistics as predictors. The answers we find will allow any player to most efficiently improve their SR and begin climbing their way to Grandmaster!

The answers we find could be used by amateurs and pro Overwatch gamers alike. We think of our analysis as the start of something like “Moneyball” for Overwatch.

Methods

df = read_csv('data/clean-data.csv')

Here we releved our factor variable to use the character Reinhardt as the reference level. Reinhardt is the most popular hero used in the game and would be a good baseline to use for comparison.

Let’s explore the data a bit more…

df %>% glimpse()
## Observations: 2,316
## Variables: 61
## $ skill_rating                           <dbl> 2535, 3815, 2909, 1735, 2…
## $ assists.defensiveAssists               <dbl> 208, 26, 5, 557, 412, 0, …
## $ assists.healingDone                    <dbl> 113872, 461978, 16315, 33…
## $ assists.offensiveAssists               <dbl> 16, 683, 30, 303, 448, 8,…
## $ average.allDamageDoneAvgPer10Min       <dbl> 10696, 11647, 10539, 7440…
## $ average.barrierDamageDoneAvgPer10Min   <dbl> 2132, 4929, 2498, 2264, 3…
## $ average.deathsAvgPer10Min              <dbl> 7.41, 6.47, 8.67, 6.89, 8…
## $ average.eliminationsAvgPer10Min        <dbl> 22.31, 20.30, 20.87, 18.1…
## $ average.finalBlowsAvgPer10Min          <dbl> 12.76, 11.25, 13.11, 6.18…
## $ average.healingDoneAvgPer10Min         <dbl> 878.00, 4094.00, 500.00, …
## $ average.heroDamageDoneAvgPer10Min      <dbl> 8223, 6490, 7773, 4977, 6…
## $ average.objectiveKillsAvgPer10Min      <dbl> 9.18, 8.15, 6.62, 8.69, 8…
## $ average.objectiveTimeAvgPer10Min       <dbl> 52, 78, 39, 76, 72, 45, 8…
## $ average.soloKillsAvgPer10Min           <dbl> 3.53, 2.14, 3.34, 1.10, 2…
## $ average.timeSpentOnFireAvgPer10Min     <dbl> 76, 76, 68, 69, 55, 154, …
## $ best.allDamageDoneMostInGame           <dbl> 27906, 29403, 19787, 1565…
## $ best.barrierDamageDoneMostInGame       <dbl> 12549, 14998, 6376, 7599,…
## $ best.defensiveAssistsMostInGame        <dbl> 10, 20, 2, 29, 36, 0, 35,…
## $ best.eliminationsMostInGame            <dbl> 60, 56, 40, 40, 52, 24, 6…
## $ best.environmentalKillsMostInGame      <dbl> 1, 5, 2, 4, 2, 0, 2, 1, 2…
## $ best.finalBlowsMostInGame              <dbl> 36, 30, 30, 17, 35, 12, 3…
## $ best.healingDoneMostInGame             <dbl> 3354, 9320, 3072, 13869, …
## $ best.heroDamageDoneMostInGame          <dbl> 20399, 17370, 14664, 1038…
## $ best.killsStreakBest                   <dbl> 60, 56, 40, 40, 52, 24, 6…
## $ best.meleeFinalBlowsMostInGame         <dbl> 4, 5, 3, 1, 1, 3, 7, 5, 2…
## $ best.multikillsBest                    <dbl> 4, 3, 4, 3, 5, 3, 4, 4, 3…
## $ best.objectiveKillsMostInGame          <dbl> 30, 35, 18, 23, 29, 9, 31…
## $ best.objectiveTimeMostInGame           <dbl> 280, 377, 169, 257, 369, …
## $ best.offensiveAssistsMostInGame        <dbl> 5, 46, 13, 27, 21, 8, 20,…
## $ best.soloKillsMostInGame               <dbl> 36, 30, 30, 17, 35, 12, 3…
## $ best.teleporterPadsDestroyedMostInGame <dbl> 1, 1, 0, 0, 3, 0, 1, 1, 3…
## $ best.timeSpentOnFireMostInGame         <dbl> 482, 353, 305, 307, 518, …
## $ best.turretsDestroyedMostInGame        <dbl> 22, 11, 3, 11, 9, 0, 4, 1…
## $ combat.barrierDamageDone               <dbl> 276462, 556147, 81535, 12…
## $ combat.damageDone                      <dbl> 1066469, 732220, 253681, …
## $ combat.deaths                          <dbl> 961, 730, 283, 368, 1064,…
## $ combat.eliminations                    <dbl> 2894, 2291, 681, 967, 228…
## $ combat.environmentalKills              <dbl> 1, 32, 3, 9, 20, 0, 5, 2,…
## $ combat.finalBlows                      <dbl> 1655, 1269, 428, 330, 102…
## $ combat.heroDamageDone                  <dbl> 1066469, 732220, 253681, …
## $ combat.meleeFinalBlows                 <dbl> 33, 153, 4, 4, 2, 3, 29, …
## $ combat.multikills                      <dbl> 24, 11, 6, 4, 30, 1, 4, 1…
## $ combat.objectiveKills                  <dbl> 1190, 920, 216, 464, 1040…
## $ combat.objectiveTime                   <dbl> 6692, 8793, 1263, 4066, 9…
## $ combat.soloKills                       <dbl> 458, 241, 109, 59, 266, 3…
## $ combat.timeSpentOnFire                 <dbl> 9869, 8592, 2217, 3660, 6…
## $ game.gamesLost                         <dbl> 55, 59, 14, 21, 56, 0, 14…
## $ game.gamesTied                         <dbl> 3, 2, 1, 0, 3, 0, 0, 2, 0…
## $ game.gamesWon                          <dbl> 56, 41, 13, 29, 53, 1, 20…
## $ matchAwards.cards                      <dbl> 58, 26, 7, 27, 29, 1, 11,…
## $ matchAwards.medals                     <dbl> 354, 395, 68, 143, 269, 5…
## $ matchAwards.medalsBronze               <dbl> 97, 143, 20, 41, 95, 2, 4…
## $ matchAwards.medalsGold                 <dbl> 169, 112, 33, 54, 83, 2, …
## $ matchAwards.medalsSilver               <dbl> 88, 140, 15, 48, 91, 1, 4…
## $ miscellaneous.teleporterPadsDestroyed  <dbl> 5, 4, 0, 0, 9, 0, 1, 1, 3…
## $ miscellaneous.turretsDestroyed         <dbl> 134, 59, 16, 67, 74, 0, 2…
## $ assists.reconAssists                   <dbl> 2, 0, 1, 0, 4, 0, 0, 2, 0…
## $ best.reconAssistsMostInGame            <dbl> 2, 0, 1, 0, 4, 0, 0, 2, 0…
## $ top_hero                               <fct> soldier76, roadhog, mccre…
## $ games_played                           <dbl> 114, 61, 79, 104, 193, 67…
## $ top_hero_type                          <chr> "damage", "tank", "damage…
df %>% summary()
##   skill_rating  assists.defensiveAssists assists.healingDone
##  Min.   :1051   Min.   :    0.0          Min.   :      0    
##  1st Qu.:2233   1st Qu.:   25.0          1st Qu.:  17430    
##  Median :2570   Median :  113.0          Median :  65304    
##  Mean   :2587   Mean   :  285.9          Mean   : 154075    
##  3rd Qu.:2917   3rd Qu.:  328.0          3rd Qu.: 184397    
##  Max.   :4416   Max.   :11406.0          Max.   :6412326    
##                                                             
##  assists.offensiveAssists average.allDamageDoneAvgPer10Min
##  Min.   :   0.0           Min.   :    0                   
##  1st Qu.:  23.0           1st Qu.: 6871                   
##  Median :  84.0           Median : 8704                   
##  Mean   : 180.0           Mean   : 8582                   
##  3rd Qu.: 222.2           3rd Qu.:10331                   
##  Max.   :2809.0           Max.   :21925                   
##                                                           
##  average.barrierDamageDoneAvgPer10Min average.deathsAvgPer10Min
##  Min.   :   0                         Min.   : 0.000           
##  1st Qu.:1830                         1st Qu.: 6.730           
##  Median :2552                         Median : 7.460           
##  Mean   :2640                         Mean   : 7.503           
##  3rd Qu.:3348                         3rd Qu.: 8.230           
##  Max.   :9885                         Max.   :15.740           
##                                                                
##  average.eliminationsAvgPer10Min average.finalBlowsAvgPer10Min
##  Min.   : 0.00                   Min.   : 0.000               
##  1st Qu.:14.88                   1st Qu.: 5.107               
##  Median :17.30                   Median : 6.920               
##  Mean   :16.82                   Mean   : 7.135               
##  3rd Qu.:19.41                   3rd Qu.: 9.015               
##  Max.   :35.36                   Max.   :26.020               
##                                                               
##  average.healingDoneAvgPer10Min average.heroDamageDoneAvgPer10Min
##  Min.   :    0                  Min.   :    0                    
##  1st Qu.: 1025                  1st Qu.: 4644                    
##  Median : 2213                  Median : 5772                    
##  Mean   : 2872                  Mean   : 5676                    
##  3rd Qu.: 4184                  3rd Qu.: 6734                    
##  Max.   :13199                  Max.   :13439                    
##                                                                  
##  average.objectiveKillsAvgPer10Min average.objectiveTimeAvgPer10Min
##  Min.   : 0.000                    Min.   :  0.00                  
##  1st Qu.: 6.268                    1st Qu.: 60.00                  
##  Median : 7.465                    Median : 75.00                  
##  Mean   : 7.336                    Mean   : 76.86                  
##  3rd Qu.: 8.530                    3rd Qu.: 93.00                  
##  Max.   :18.200                    Max.   :229.00                  
##                                                                    
##  average.soloKillsAvgPer10Min average.timeSpentOnFireAvgPer10Min
##  Min.   :0.000                Min.   :  0.00                    
##  1st Qu.:0.640                1st Qu.: 35.00                    
##  Median :1.140                Median : 53.00                    
##  Mean   :1.369                Mean   : 54.66                    
##  3rd Qu.:1.900                3rd Qu.: 69.25                    
##  Max.   :8.970                Max.   :355.00                    
##                                                                 
##  best.allDamageDoneMostInGame best.barrierDamageDoneMostInGame
##  Min.   :    0                Min.   :    0                   
##  1st Qu.:16373                1st Qu.: 6004                   
##  Median :22157                Median : 9410                   
##  Mean   :22232                Mean   : 9601                   
##  3rd Qu.:27594                3rd Qu.:12682                   
##  Max.   :69929                Max.   :40390                   
##                                                               
##  best.defensiveAssistsMostInGame best.eliminationsMostInGame
##  Min.   : 0.00                   Min.   : 0.00              
##  1st Qu.:13.00                   1st Qu.:34.00              
##  Median :26.00                   Median :42.00              
##  Mean   :25.52                   Mean   :41.35              
##  3rd Qu.:37.00                   3rd Qu.:50.00              
##  Max.   :85.00                   Max.   :91.00              
##                                                             
##  best.environmentalKillsMostInGame best.finalBlowsMostInGame
##  Min.   : 0.000                    Min.   : 0.0             
##  1st Qu.: 0.000                    1st Qu.:14.0             
##  Median : 1.000                    Median :20.0             
##  Mean   : 1.488                    Mean   :20.4             
##  3rd Qu.: 2.000                    3rd Qu.:26.0             
##  Max.   :11.000                    Max.   :56.0             
##                                                             
##  best.healingDoneMostInGame best.heroDamageDoneMostInGame
##  Min.   :    0              Min.   :    0                
##  1st Qu.: 6339              1st Qu.:10599                
##  Median :11944              Median :13842                
##  Mean   :11538              Mean   :13968                
##  3rd Qu.:16354              3rd Qu.:17333                
##  Max.   :33089              Max.   :35887                
##                                                          
##  best.killsStreakBest best.meleeFinalBlowsMostInGame best.multikillsBest
##  Min.   : 0.00        Min.   :0.000                  Min.   :0.000      
##  1st Qu.:34.00        1st Qu.:1.000                  1st Qu.:3.000      
##  Median :42.00        Median :1.000                  Median :4.000      
##  Mean   :41.35        Mean   :1.503                  Mean   :3.207      
##  3rd Qu.:50.00        3rd Qu.:2.000                  3rd Qu.:4.000      
##  Max.   :91.00        Max.   :8.000                  Max.   :6.000      
##                                                                         
##  best.objectiveKillsMostInGame best.objectiveTimeMostInGame
##  Min.   : 0.00                 Min.   :  0.0               
##  1st Qu.:17.00                 1st Qu.:177.0               
##  Median :22.00                 Median :259.0               
##  Mean   :21.96                 Mean   :267.6               
##  3rd Qu.:27.00                 3rd Qu.:345.0               
##  Max.   :56.00                 Max.   :776.0               
##                                                            
##  best.offensiveAssistsMostInGame best.soloKillsMostInGame
##  Min.   : 0.00                   Min.   : 0.0            
##  1st Qu.: 9.00                   1st Qu.:14.0            
##  Median :15.00                   Median :20.0            
##  Mean   :15.86                   Mean   :20.4            
##  3rd Qu.:22.00                   3rd Qu.:26.0            
##  Max.   :59.00                   Max.   :56.0            
##                                                          
##  best.teleporterPadsDestroyedMostInGame best.timeSpentOnFireMostInGame
##  Min.   :0.0000                         Min.   :  0.0                 
##  1st Qu.:0.0000                         1st Qu.:184.0                 
##  Median :0.0000                         Median :296.0                 
##  Mean   :0.7539                         Mean   :298.3                 
##  3rd Qu.:1.0000                         3rd Qu.:410.0                 
##  Max.   :6.0000                         Max.   :938.0                 
##                                                                       
##  best.turretsDestroyedMostInGame combat.barrierDamageDone
##  Min.   : 0.000                  Min.   :      0         
##  1st Qu.: 3.000                  1st Qu.:  25613         
##  Median : 6.000                  Median :  74947         
##  Mean   : 6.633                  Mean   : 147924         
##  3rd Qu.:10.000                  3rd Qu.: 187504         
##  Max.   :29.000                  Max.   :1943961         
##                                                          
##  combat.damageDone combat.deaths    combat.eliminations
##  Min.   :      0   Min.   :   0.0   Min.   :    0.0    
##  1st Qu.:  59714   1st Qu.:  86.0   1st Qu.:  186.0    
##  Median : 163050   Median : 226.0   Median :  515.0    
##  Mean   : 320381   Mean   : 404.9   Mean   :  946.4    
##  3rd Qu.: 404488   3rd Qu.: 529.0   3rd Qu.: 1204.0    
##  Max.   :3774790   Max.   :4501.0   Max.   :11197.0    
##                                                        
##  combat.environmentalKills combat.finalBlows combat.heroDamageDone
##  Min.   :  0.000           Min.   :   0.0    Min.   :      0      
##  1st Qu.:  0.000           1st Qu.:  69.0    1st Qu.:  59714      
##  Median :  2.000           Median : 201.0    Median : 163050      
##  Mean   :  5.305           Mean   : 406.8    Mean   : 320381      
##  3rd Qu.:  6.000           3rd Qu.: 492.0    3rd Qu.: 404488      
##  Max.   :103.000           Max.   :5924.0    Max.   :3774790      
##                                                                   
##  combat.meleeFinalBlows combat.multikills combat.objectiveKills
##  Min.   :  0.000        Min.   :  0.00    Min.   :   0.0       
##  1st Qu.:  1.000        1st Qu.:  1.00    1st Qu.:  82.0       
##  Median :  3.000        Median :  5.00    Median : 223.0       
##  Mean   :  9.567        Mean   : 10.17    Mean   : 411.5       
##  3rd Qu.: 11.000        3rd Qu.: 12.00    3rd Qu.: 534.2       
##  Max.   :232.000        Max.   :144.00    Max.   :6059.0       
##                                                                
##  combat.objectiveTime combat.soloKills combat.timeSpentOnFire
##  Min.   :    0.0      Min.   :   0     Min.   :    0         
##  1st Qu.:  869.8      1st Qu.:  10     1st Qu.:  538         
##  Median : 2303.5      Median :  32     Median : 1574         
##  Mean   : 4212.1      Mean   :  78     Mean   : 3152         
##  3rd Qu.: 5661.2      3rd Qu.:  89     3rd Qu.: 4007         
##  Max.   :57495.0      Max.   :1674     Max.   :46230         
##                                                              
##  game.gamesLost  game.gamesTied  game.gamesWon    matchAwards.cards
##  Min.   :  0.0   Min.   : 0.00   Min.   :  0.00   Min.   :  0.00   
##  1st Qu.:  5.0   1st Qu.: 0.00   1st Qu.:  5.00   1st Qu.:  3.00   
##  Median : 13.0   Median : 0.00   Median : 13.00   Median :  9.00   
##  Mean   : 22.6   Mean   : 1.12   Mean   : 23.07   Mean   : 16.26   
##  3rd Qu.: 29.0   3rd Qu.: 2.00   3rd Qu.: 31.00   3rd Qu.: 21.00   
##  Max.   :264.0   Max.   :14.00   Max.   :265.00   Max.   :336.00   
##                                                                    
##  matchAwards.medals matchAwards.medalsBronze matchAwards.medalsGold
##  Min.   :   0.0     Min.   :  0.00           Min.   :  0.00        
##  1st Qu.:  26.0     1st Qu.:  8.00           1st Qu.:  8.00        
##  Median :  67.5     Median : 20.50           Median : 22.50        
##  Mean   : 121.0     Mean   : 38.09           Mean   : 42.67        
##  3rd Qu.: 155.0     3rd Qu.: 49.00           3rd Qu.: 53.00        
##  Max.   :1477.0     Max.   :392.00           Max.   :728.00        
##                                                                    
##  matchAwards.medalsSilver miscellaneous.teleporterPadsDestroyed
##  Min.   :  0.00           Min.   : 0.000                       
##  1st Qu.:  8.75           1st Qu.: 0.000                       
##  Median : 22.00           Median : 0.000                       
##  Mean   : 40.23           Mean   : 1.724                       
##  3rd Qu.: 53.00           3rd Qu.: 2.000                       
##  Max.   :409.00           Max.   :56.000                       
##                                                                
##  miscellaneous.turretsDestroyed assists.reconAssists
##  Min.   :  0.00                 Min.   : 0.000      
##  1st Qu.:  5.00                 1st Qu.: 0.000      
##  Median : 18.00                 Median : 0.000      
##  Mean   : 37.48                 Mean   : 2.877      
##  3rd Qu.: 46.00                 3rd Qu.: 4.000      
##  Max.   :746.00                 Max.   :35.000      
##                                                     
##  best.reconAssistsMostInGame      top_hero     games_played
##  Min.   : 0.0                reinhardt: 221   Min.   : 11  
##  1st Qu.: 0.0                moira    : 201   1st Qu.: 39  
##  Median : 0.0                mercy    : 155   Median : 72  
##  Mean   : 2.3                lucio    : 154   Mean   :104  
##  3rd Qu.: 4.0                orisa    : 142   3rd Qu.:133  
##  Max.   :30.0                dVa      : 131   Max.   :672  
##                              (Other)  :1312                
##  top_hero_type     
##  Length:2316       
##  Class :character  
##  Mode  :character  
##                    
##                    
##                    
## 

The main question we want to tackle is: what explains the variation in skill_rating? Let’s first look at the distribution of skill_rating.

Above is a normalized (to sum to 1) histogram of the reponse we want to model skill_rating. It appears that skill_rating (blue bars) looks a lot like a normal distribution (the orange line). This is a good thing, as this makes it easier to adhere to the assumptions of linear regression model we will use to explain the variation in player skill.

Most played heroes

At the time of the analysis, there are 30 heroes in Overwatch to choose from. Each hero has a unique play style. There are three types of heroes which determine the play style: Tank, Damage, or Support. Tank heroes can take a lot of damage and typically protect their teammates while trying to remain on the objective area. Damage heroes have the ability to do the most damage to the opposition. They have lower health than Tank heroes, meaning they can “die” more easily.

Lastly, there are Support heroes. These heroes typically have the least health and do the least amount of damage to opponents. Instead of holding down an objective or damaging opponents, Support heroes main job to restore the health of their teammates, which is their primary special role on the team. That being said, all heroes can do damage and a really good Support player can beat a hard-to-kill tank in the game. You can read more about the heroes here.

First, let’s see which heroes are the most popular to play, and which type of hero they are:

Reinhardt, a Tank, and Moira, a Support hero, are by far the two most popular choices in competitive Overwatch games on Playstation. Overall, Damage heroes are less often a player’s most-played character according the career stats data above. One reason for this is that, in competitive matches, strategy and special abilities like healing teammates are more important simply damaging your opponents. For example, the most popular hero Reinhardt has the largest shield in the game which all of his other teammates can stand behind and be protected from opposition damage. This is really useful when trying to remain on the objective area and keeping the other team out.

Here we see that the Tank and Support type heroes are more popular than the Damage heroes. Reinhardt was the most popular tank during the open beta and it appears his popularity remains strong. Ana is considered one of the most difficult heroes to play and master. The game developers may be interested to dig deeper to find out why Pharah is the least popular. Perhaps it’s because she’s an easy target for skilled players to hit, has only an average amount of health and cannot heal herself.

Full additive model

We’ll start to understand what predicts skill_rating by using all available predictors, including the most popular hero got a given player shown in the chart above.

We start with a basic additive model to get a sense of our data and to explore potential issues. Let’s see if our assumptions of linear regression hold true (LINE).

fit_add_full = lm(skill_rating ~ . -top_hero_type, data = df)

diagnostics(fit_add_full, testit = FALSE)

(fm_diag = diagnostics(fit_add_full, plotit = FALSE))
## $p_val
## [1] 1.079526e-08
## 
## $decision
## [1] "Reject"
fm_bp = bptest(fit_add_full)
fm_bp
## 
##  studentized Breusch-Pagan test
## 
## data:  fit_add_full
## BP = 163.24, df = 84, p-value = 5.079e-07

Our full additive model fails both the Shapiro-Wilk and Bruesch-Pagan test. We reject the null hypothesis in the Shapiro-Wilk test which means that there is only a small probability that the data could have been sampled from a normal distribution.

Also, we reject the null of homoscedasticity, which means that the constant variance assumption is violated.

Full additive model problems

There are two major problems in the full additive model: heteroskedasticity and non-normal residuals. We can try to find the correct model and apply transformations to the predictors. Or, what we’ll do instead is think more carefully about the predictors and hand-pick a smaller model to start with based on exploratory data analysis and our knowledge of Overwatch.

Let’s look at the collinearity of our predictor variables.

pair_vars = c("best.meleeFinalBlowsMostInGame",
              "best.offensiveAssistsMostInGame",
              "average.objectiveTimeAvgPer10Min",
              "average.allDamageDoneAvgPer10Min",
              "average.objectiveKillsAvgPer10Min",
              "games_played",
              "skill_rating")
pairs(df[pair_vars])

These pairwise plots look good. The average.allDamageDoneAvgPer10Min and average.objectiveKillsAvgPer10Min predictors appear to be slightly correlated but doesn’t seem strong enough to remove one.

find_cor_sr <- function(data){
  M <- cor(data %>% select_if(is.numeric))
  M[row.names(M) == 'skill_rating', !(colnames(M) %in% c('rank', 'skill_rating'))]
}

linear_cors = find_cor_sr(df)

The five most positively correlated variables with skill_rating are: best.meleeFinalBlowsMostInGame, best.offensiveAssistsMostInGame, average.barrierDamageDoneAvgPer10Min, average.allDamageDoneAvgPer10Min, combat.meleeFinalBlows.

Among the most positively correlated variables there are some redundant variables. For example, best.meleeFinalBlowsMostInGame and combat.meleeFinalBlows are both measures of how many melees a player does in a game that “killed” an opponent hero. They are highly correlated, with a correlation coefficient of 0.6548119. So we only need to keep the more correlated variable in our next model.

Another conceptually redundant pair of variables is average.allDamageDoneAvgPer10Min and average.barrierDamageDoneAvgPer10Min. average.allDamageDoneAvgPer10Min is more interpretable than average.barrierDamageDoneAvgPer10Min. That’s because when you average a lot of damage output per 10 minutes, and there happens to be a barrier you’re damaging (for example, Reinhardt’s shield), then average.barrierDamageDoneAvgPer10Min is just a side effect of damage output. And this is seen in the data, these two variables are highly correlated, with a corrleation of 0.8441916.

The two most negatively correlated variables with skill_rating are: average.objectiveTimeAvgPer10Min, average.objectiveKillsAvgPer10Min.

Again, these two variables are conceptually very similar so we only need to keep one in the next model: average.objectiveKillsAvgPer10Min. average.objectiveKillsAvgPer10Min is more actionable than average.objectiveTimeAvgPer10Min since it’s more specific about what to do when a player is on the objective area, get “kills”.

Number of games played as a predictor

A player may need to get better to improve their “average” statistics laid out in the correlated variables above. But one thing any player can always do is play more. So we also want to consider the number of games played as a predictor of skill_rating as it’s both actionable and an obvious variable to control for, i.e. are the most skilled just those who have played the most?

par(mfrow=c(1,2))
plot(skill_rating ~ games_played, data = df)
plot(skill_rating ~ log(games_played), data = df)

We can see that the natural log transform of games_played makes the positive relationship with skill_rating easier to see and brings in the long tail of players who have played many more games than the median player. This will help prevent heteroskedasticity with this predictor in the linear model. The correlation between games_played and skill_rating is 0.1080446.

Now, using the predictors we’ve identifed we run a backwards search starting with all of the predictors in the model.

df_final = df %>% select(one_of(c(pair_vars, 'top_hero')))

fit = lm(skill_rating ~ top_hero : . + ., data = df_final)
summary(fit)
## 
## Call:
## lm(formula = skill_rating ~ top_hero:. + ., data = df_final)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1530.2  -276.9    -3.7   270.6  1684.1 
## 
## Coefficients:
##                                                          Estimate
## (Intercept)                                             1.685e+03
## top_heroana                                             1.089e+03
## top_heroashe                                            8.176e+02
## top_herobaptiste                                        3.348e+02
## top_herobastion                                        -3.530e+02
## top_herobrigitte                                        5.428e+02
## top_herodoomfist                                        5.160e+02
## top_herodVa                                             9.994e+01
## top_herogenji                                           4.120e+01
## top_herohanzo                                          -1.444e+01
## top_herojunkrat                                        -2.117e+02
## top_herolucio                                           8.322e+02
## top_heromccree                                          5.965e+02
## top_heromei                                            -1.215e+01
## top_heromercy                                           7.476e+02
## top_heromoira                                           6.055e+02
## top_heroorisa                                          -2.623e+02
## top_heropharah                                         -2.760e+02
## top_heroreaper                                          2.015e+02
## top_heroroadhog                                         8.687e+01
## top_herosoldier76                                       9.044e+02
## top_herosombra                                          4.393e+02
## top_herosymmetra                                        1.396e+03
## top_herotorbjorn                                        2.375e+02
## top_herotracer                                          2.692e+02
## top_herowidowmaker                                     -1.997e+02
## top_herowinston                                        -1.211e+03
## top_herowreckingBall                                    8.095e+02
## top_herozarya                                           1.675e+02
## top_herozenyatta                                        3.066e+01
## best.meleeFinalBlowsMostInGame                          4.664e+01
## best.offensiveAssistsMostInGame                         1.220e+01
## average.objectiveTimeAvgPer10Min                        2.640e+00
## average.allDamageDoneAvgPer10Min                        1.090e-01
## average.objectiveKillsAvgPer10Min                      -7.223e+01
## games_played                                           -1.984e-01
## top_heroana:best.meleeFinalBlowsMostInGame             -5.656e+01
## top_heroashe:best.meleeFinalBlowsMostInGame             1.566e+01
## top_herobaptiste:best.meleeFinalBlowsMostInGame        -4.851e+01
## top_herobastion:best.meleeFinalBlowsMostInGame          2.148e+02
## top_herobrigitte:best.meleeFinalBlowsMostInGame         1.203e+02
## top_herodoomfist:best.meleeFinalBlowsMostInGame        -2.954e+01
## top_herodVa:best.meleeFinalBlowsMostInGame             -2.605e+01
## top_herogenji:best.meleeFinalBlowsMostInGame           -4.821e+01
## top_herohanzo:best.meleeFinalBlowsMostInGame           -2.325e+01
## top_herojunkrat:best.meleeFinalBlowsMostInGame         -5.447e+01
## top_herolucio:best.meleeFinalBlowsMostInGame           -9.885e+00
## top_heromccree:best.meleeFinalBlowsMostInGame          -8.513e+01
## top_heromei:best.meleeFinalBlowsMostInGame             -9.779e+00
## top_heromercy:best.meleeFinalBlowsMostInGame            7.390e+01
## top_heromoira:best.meleeFinalBlowsMostInGame            5.235e+01
## top_heroorisa:best.meleeFinalBlowsMostInGame            1.185e+02
## top_heropharah:best.meleeFinalBlowsMostInGame          -5.055e+01
## top_heroreaper:best.meleeFinalBlowsMostInGame          -3.782e+01
## top_heroroadhog:best.meleeFinalBlowsMostInGame         -1.859e+01
## top_herosoldier76:best.meleeFinalBlowsMostInGame        7.962e+00
## top_herosombra:best.meleeFinalBlowsMostInGame           2.172e+02
## top_herosymmetra:best.meleeFinalBlowsMostInGame         2.821e+02
## top_herotorbjorn:best.meleeFinalBlowsMostInGame         1.088e+01
## top_herotracer:best.meleeFinalBlowsMostInGame          -7.055e+01
## top_herowidowmaker:best.meleeFinalBlowsMostInGame      -4.066e+01
## top_herowinston:best.meleeFinalBlowsMostInGame          1.321e+02
## top_herowreckingBall:best.meleeFinalBlowsMostInGame     1.313e+01
## top_herozarya:best.meleeFinalBlowsMostInGame           -1.620e+01
## top_herozenyatta:best.meleeFinalBlowsMostInGame         1.838e+02
## top_heroana:best.offensiveAssistsMostInGame            -2.418e+00
## top_heroashe:best.offensiveAssistsMostInGame           -2.353e+00
## top_herobaptiste:best.offensiveAssistsMostInGame        1.148e+01
## top_herobastion:best.offensiveAssistsMostInGame        -2.020e+01
## top_herobrigitte:best.offensiveAssistsMostInGame       -1.405e+01
## top_herodoomfist:best.offensiveAssistsMostInGame       -6.365e+00
## top_herodVa:best.offensiveAssistsMostInGame             1.861e+00
## top_herogenji:best.offensiveAssistsMostInGame          -4.840e-01
## top_herohanzo:best.offensiveAssistsMostInGame           8.823e+00
## top_herojunkrat:best.offensiveAssistsMostInGame        -8.229e+00
## top_herolucio:best.offensiveAssistsMostInGame           4.725e+00
## top_heromccree:best.offensiveAssistsMostInGame         -5.683e+00
## top_heromei:best.offensiveAssistsMostInGame             2.591e+00
## top_heromercy:best.offensiveAssistsMostInGame           9.691e-01
## top_heromoira:best.offensiveAssistsMostInGame          -9.795e+00
## top_heroorisa:best.offensiveAssistsMostInGame          -8.022e-01
## top_heropharah:best.offensiveAssistsMostInGame         -1.487e+01
## top_heroreaper:best.offensiveAssistsMostInGame          1.945e+00
## top_heroroadhog:best.offensiveAssistsMostInGame         1.145e+01
## top_herosoldier76:best.offensiveAssistsMostInGame       7.180e+00
## top_herosombra:best.offensiveAssistsMostInGame         -2.156e+01
## top_herosymmetra:best.offensiveAssistsMostInGame        4.954e+00
## top_herotorbjorn:best.offensiveAssistsMostInGame        1.451e+00
## top_herotracer:best.offensiveAssistsMostInGame         -1.253e+01
## top_herowidowmaker:best.offensiveAssistsMostInGame      1.085e+01
## top_herowinston:best.offensiveAssistsMostInGame         1.155e+01
## top_herowreckingBall:best.offensiveAssistsMostInGame   -1.723e+01
## top_herozarya:best.offensiveAssistsMostInGame          -1.562e+01
## top_herozenyatta:best.offensiveAssistsMostInGame       -8.972e+00
## top_heroana:average.objectiveTimeAvgPer10Min           -3.648e+00
## top_heroashe:average.objectiveTimeAvgPer10Min          -4.293e+00
## top_herobaptiste:average.objectiveTimeAvgPer10Min      -1.933e+00
## top_herobastion:average.objectiveTimeAvgPer10Min       -9.250e-01
## top_herobrigitte:average.objectiveTimeAvgPer10Min       1.383e+00
## top_herodoomfist:average.objectiveTimeAvgPer10Min       6.401e-01
## top_herodVa:average.objectiveTimeAvgPer10Min           -3.945e+00
## top_herogenji:average.objectiveTimeAvgPer10Min         -1.901e+00
## top_herohanzo:average.objectiveTimeAvgPer10Min         -1.446e+00
## top_herojunkrat:average.objectiveTimeAvgPer10Min        1.826e+00
## top_herolucio:average.objectiveTimeAvgPer10Min         -1.078e-01
## top_heromccree:average.objectiveTimeAvgPer10Min        -3.558e+00
## top_heromei:average.objectiveTimeAvgPer10Min           -4.723e-01
## top_heromercy:average.objectiveTimeAvgPer10Min         -2.252e+00
## top_heromoira:average.objectiveTimeAvgPer10Min         -4.572e+00
## top_heroorisa:average.objectiveTimeAvgPer10Min          2.282e+00
## top_heropharah:average.objectiveTimeAvgPer10Min         2.730e+01
## top_heroreaper:average.objectiveTimeAvgPer10Min         4.929e+00
## top_heroroadhog:average.objectiveTimeAvgPer10Min       -3.646e+00
## top_herosoldier76:average.objectiveTimeAvgPer10Min     -3.060e+00
## top_herosombra:average.objectiveTimeAvgPer10Min        -7.621e-01
## top_herosymmetra:average.objectiveTimeAvgPer10Min      -8.532e+00
## top_herotorbjorn:average.objectiveTimeAvgPer10Min      -6.689e+00
## top_herotracer:average.objectiveTimeAvgPer10Min        -9.095e+00
## top_herowidowmaker:average.objectiveTimeAvgPer10Min    -2.897e+00
## top_herowinston:average.objectiveTimeAvgPer10Min        7.434e+00
## top_herowreckingBall:average.objectiveTimeAvgPer10Min  -7.405e+00
## top_herozarya:average.objectiveTimeAvgPer10Min         -5.429e+00
## top_herozenyatta:average.objectiveTimeAvgPer10Min      -1.038e+01
## top_heroana:average.allDamageDoneAvgPer10Min           -6.300e-02
## top_heroashe:average.allDamageDoneAvgPer10Min          -5.136e-02
## top_herobaptiste:average.allDamageDoneAvgPer10Min       1.817e-02
## top_herobastion:average.allDamageDoneAvgPer10Min       -6.886e-02
## top_herobrigitte:average.allDamageDoneAvgPer10Min       2.201e-02
## top_herodoomfist:average.allDamageDoneAvgPer10Min       1.492e-01
## top_herodVa:average.allDamageDoneAvgPer10Min           -2.113e-03
## top_herogenji:average.allDamageDoneAvgPer10Min          9.634e-02
## top_herohanzo:average.allDamageDoneAvgPer10Min          6.399e-02
## top_herojunkrat:average.allDamageDoneAvgPer10Min        6.345e-03
## top_herolucio:average.allDamageDoneAvgPer10Min         -3.346e-02
## top_heromccree:average.allDamageDoneAvgPer10Min        -2.755e-02
## top_heromei:average.allDamageDoneAvgPer10Min           -5.711e-02
## top_heromercy:average.allDamageDoneAvgPer10Min         -7.155e-02
## top_heromoira:average.allDamageDoneAvgPer10Min         -6.674e-02
## top_heroorisa:average.allDamageDoneAvgPer10Min          6.129e-03
## top_heropharah:average.allDamageDoneAvgPer10Min        -3.683e-02
## top_heroreaper:average.allDamageDoneAvgPer10Min        -1.250e-02
## top_heroroadhog:average.allDamageDoneAvgPer10Min        4.027e-03
## top_herosoldier76:average.allDamageDoneAvgPer10Min     -2.931e-02
## top_herosombra:average.allDamageDoneAvgPer10Min        -1.968e-02
## top_herosymmetra:average.allDamageDoneAvgPer10Min      -7.515e-02
## top_herotorbjorn:average.allDamageDoneAvgPer10Min       1.326e-02
## top_herotracer:average.allDamageDoneAvgPer10Min        -1.485e-02
## top_herowidowmaker:average.allDamageDoneAvgPer10Min     9.889e-02
## top_herowinston:average.allDamageDoneAvgPer10Min        1.862e-01
## top_herowreckingBall:average.allDamageDoneAvgPer10Min  -1.992e-02
## top_herozarya:average.allDamageDoneAvgPer10Min          3.963e-02
## top_herozenyatta:average.allDamageDoneAvgPer10Min       1.892e-02
## top_heroana:average.objectiveKillsAvgPer10Min          -1.505e+01
## top_heroashe:average.objectiveKillsAvgPer10Min          1.224e+01
## top_herobaptiste:average.objectiveKillsAvgPer10Min     -4.013e+01
## top_herobastion:average.objectiveKillsAvgPer10Min       6.563e+01
## top_herobrigitte:average.objectiveKillsAvgPer10Min     -9.365e+01
## top_herodoomfist:average.objectiveKillsAvgPer10Min     -2.713e+02
## top_herodVa:average.objectiveKillsAvgPer10Min          -3.003e-01
## top_herogenji:average.objectiveKillsAvgPer10Min        -1.009e+02
## top_herohanzo:average.objectiveKillsAvgPer10Min        -9.299e+01
## top_herojunkrat:average.objectiveKillsAvgPer10Min      -1.317e+01
## top_herolucio:average.objectiveKillsAvgPer10Min        -7.765e+01
## top_heromccree:average.objectiveKillsAvgPer10Min        4.249e+00
## top_heromei:average.objectiveKillsAvgPer10Min           2.349e+01
## top_heromercy:average.objectiveKillsAvgPer10Min        -3.418e+01
## top_heromoira:average.objectiveKillsAvgPer10Min         4.862e+01
## top_heroorisa:average.objectiveKillsAvgPer10Min        -3.830e+01
## top_heropharah:average.objectiveKillsAvgPer10Min       -1.158e+02
## top_heroreaper:average.objectiveKillsAvgPer10Min       -6.002e+01
## top_heroroadhog:average.objectiveKillsAvgPer10Min      -4.731e-01
## top_herosoldier76:average.objectiveKillsAvgPer10Min    -6.950e+01
## top_herosombra:average.objectiveKillsAvgPer10Min       -2.619e+01
## top_herosymmetra:average.objectiveKillsAvgPer10Min     -1.552e+01
## top_herotorbjorn:average.objectiveKillsAvgPer10Min     -2.269e+01
## top_herotracer:average.objectiveKillsAvgPer10Min        8.969e+01
## top_herowidowmaker:average.objectiveKillsAvgPer10Min   -7.822e+01
## top_herowinston:average.objectiveKillsAvgPer10Min      -1.654e+02
## top_herowreckingBall:average.objectiveKillsAvgPer10Min -2.223e+00
## top_herozarya:average.objectiveKillsAvgPer10Min         3.680e+01
## top_herozenyatta:average.objectiveKillsAvgPer10Min      6.649e+01
## top_heroana:games_played                               -3.029e-01
## top_heroashe:games_played                               2.318e-01
## top_herobaptiste:games_played                           7.634e-01
## top_herobastion:games_played                            2.908e+00
## top_herobrigitte:games_played                           8.713e-01
## top_herodoomfist:games_played                           1.021e+00
## top_herodVa:games_played                                6.380e-01
## top_herogenji:games_played                              1.950e-01
## top_herohanzo:games_played                              7.088e-01
## top_herojunkrat:games_played                            6.363e-02
## top_herolucio:games_played                             -1.393e-01
## top_heromccree:games_played                             1.013e+00
## top_heromei:games_played                                1.225e+00
## top_heromercy:games_played                              1.160e+00
## top_heromoira:games_played                              1.125e+00
## top_heroorisa:games_played                              6.644e-01
## top_heropharah:games_played                             2.054e+00
## top_heroreaper:games_played                             5.708e-01
## top_heroroadhog:games_played                            1.800e-01
## top_herosoldier76:games_played                         -9.846e-01
## top_herosombra:games_played                             1.761e+00
## top_herosymmetra:games_played                          -9.314e-01
## top_herotorbjorn:games_played                           1.426e+00
## top_herotracer:games_played                             1.294e-01
## top_herowidowmaker:games_played                         7.809e-01
## top_herowinston:games_played                            1.679e+00
## top_herowreckingBall:games_played                       1.441e+00
## top_herozarya:games_played                             -2.435e-01
## top_herozenyatta:games_played                           4.554e-01
##                                                        Std. Error t value
## (Intercept)                                             2.006e+02   8.398
## top_heroana                                             2.863e+02   3.804
## top_heroashe                                            5.010e+02   1.632
## top_herobaptiste                                        3.621e+02   0.925
## top_herobastion                                         5.615e+02  -0.629
## top_herobrigitte                                        4.594e+02   1.181
## top_herodoomfist                                        6.185e+02   0.834
## top_herodVa                                             3.051e+02   0.328
## top_herogenji                                           4.036e+02   0.102
## top_herohanzo                                           3.870e+02  -0.037
## top_herojunkrat                                         3.583e+02  -0.591
## top_herolucio                                           2.974e+02   2.798
## top_heromccree                                          3.639e+02   1.639
## top_heromei                                             5.497e+02  -0.022
## top_heromercy                                           2.647e+02   2.825
## top_heromoira                                           2.782e+02   2.177
## top_heroorisa                                           3.493e+02  -0.751
## top_heropharah                                          6.011e+02  -0.459
## top_heroreaper                                          3.994e+02   0.505
## top_heroroadhog                                         3.249e+02   0.267
## top_herosoldier76                                       4.796e+02   1.886
## top_herosombra                                          6.038e+02   0.728
## top_herosymmetra                                        6.667e+02   2.094
## top_herotorbjorn                                        8.474e+02   0.280
## top_herotracer                                          6.854e+02   0.393
## top_herowidowmaker                                      4.058e+02  -0.492
## top_herowinston                                         1.113e+03  -1.087
## top_herowreckingBall                                    4.563e+02   1.774
## top_herozarya                                           3.993e+02   0.419
## top_herozenyatta                                        3.383e+02   0.091
## best.meleeFinalBlowsMostInGame                          2.602e+01   1.793
## best.offensiveAssistsMostInGame                         4.160e+00   2.933
## average.objectiveTimeAvgPer10Min                        1.542e+00   1.712
## average.allDamageDoneAvgPer10Min                        1.961e-02   5.561
## average.objectiveKillsAvgPer10Min                       2.486e+01  -2.906
## games_played                                            3.043e-01  -0.652
## top_heroana:best.meleeFinalBlowsMostInGame              4.793e+01  -1.180
## top_heroashe:best.meleeFinalBlowsMostInGame             9.787e+01   0.160
## top_herobaptiste:best.meleeFinalBlowsMostInGame         5.960e+01  -0.814
## top_herobastion:best.meleeFinalBlowsMostInGame          1.133e+02   1.895
## top_herobrigitte:best.meleeFinalBlowsMostInGame         8.426e+01   1.428
## top_herodoomfist:best.meleeFinalBlowsMostInGame         7.002e+01  -0.422
## top_herodVa:best.meleeFinalBlowsMostInGame              4.362e+01  -0.597
## top_herogenji:best.meleeFinalBlowsMostInGame            4.082e+01  -1.181
## top_herohanzo:best.meleeFinalBlowsMostInGame            5.663e+01  -0.411
## top_herojunkrat:best.meleeFinalBlowsMostInGame          6.211e+01  -0.877
## top_herolucio:best.meleeFinalBlowsMostInGame            4.340e+01  -0.228
## top_heromccree:best.meleeFinalBlowsMostInGame           5.694e+01  -1.495
## top_heromei:best.meleeFinalBlowsMostInGame              6.792e+01  -0.144
## top_heromercy:best.meleeFinalBlowsMostInGame            4.526e+01   1.633
## top_heromoira:best.meleeFinalBlowsMostInGame            4.526e+01   1.157
## top_heroorisa:best.meleeFinalBlowsMostInGame            4.222e+01   2.806
## top_heropharah:best.meleeFinalBlowsMostInGame           2.625e+02  -0.193
## top_heroreaper:best.meleeFinalBlowsMostInGame           5.435e+01  -0.696
## top_heroroadhog:best.meleeFinalBlowsMostInGame          3.909e+01  -0.476
## top_herosoldier76:best.meleeFinalBlowsMostInGame        7.735e+01   0.103
## top_herosombra:best.meleeFinalBlowsMostInGame           9.288e+01   2.339
## top_herosymmetra:best.meleeFinalBlowsMostInGame         1.845e+02   1.529
## top_herotorbjorn:best.meleeFinalBlowsMostInGame         1.010e+02   0.108
## top_herotracer:best.meleeFinalBlowsMostInGame           7.314e+01  -0.965
## top_herowidowmaker:best.meleeFinalBlowsMostInGame       5.239e+01  -0.776
## top_herowinston:best.meleeFinalBlowsMostInGame          1.094e+02   1.207
## top_herowreckingBall:best.meleeFinalBlowsMostInGame     6.845e+01   0.192
## top_herozarya:best.meleeFinalBlowsMostInGame            6.186e+01  -0.262
## top_herozenyatta:best.meleeFinalBlowsMostInGame         5.838e+01   3.149
## top_heroana:best.offensiveAssistsMostInGame             7.978e+00  -0.303
## top_heroashe:best.offensiveAssistsMostInGame            9.977e+00  -0.236
## top_herobaptiste:best.offensiveAssistsMostInGame        8.911e+00   1.288
## top_herobastion:best.offensiveAssistsMostInGame         1.513e+01  -1.336
## top_herobrigitte:best.offensiveAssistsMostInGame        1.020e+01  -1.377
## top_herodoomfist:best.offensiveAssistsMostInGame        1.210e+01  -0.526
## top_herodVa:best.offensiveAssistsMostInGame             6.636e+00   0.280
## top_herogenji:best.offensiveAssistsMostInGame           7.360e+00  -0.066
## top_herohanzo:best.offensiveAssistsMostInGame           8.153e+00   1.082
## top_herojunkrat:best.offensiveAssistsMostInGame         8.629e+00  -0.954
## top_herolucio:best.offensiveAssistsMostInGame           5.967e+00   0.792
## top_heromccree:best.offensiveAssistsMostInGame          8.422e+00  -0.675
## top_heromei:best.offensiveAssistsMostInGame             1.397e+01   0.185
## top_heromercy:best.offensiveAssistsMostInGame           5.803e+00   0.167
## top_heromoira:best.offensiveAssistsMostInGame           5.761e+00  -1.700
## top_heroorisa:best.offensiveAssistsMostInGame           6.425e+00  -0.125
## top_heropharah:best.offensiveAssistsMostInGame          3.162e+01  -0.470
## top_heroreaper:best.offensiveAssistsMostInGame          8.485e+00   0.229
## top_heroroadhog:best.offensiveAssistsMostInGame         7.433e+00   1.540
## top_herosoldier76:best.offensiveAssistsMostInGame       9.731e+00   0.738
## top_herosombra:best.offensiveAssistsMostInGame          1.166e+01  -1.849
## top_herosymmetra:best.offensiveAssistsMostInGame        1.455e+01   0.340
## top_herotorbjorn:best.offensiveAssistsMostInGame        1.685e+01   0.086
## top_herotracer:best.offensiveAssistsMostInGame          1.264e+01  -0.992
## top_herowidowmaker:best.offensiveAssistsMostInGame      9.204e+00   1.178
## top_herowinston:best.offensiveAssistsMostInGame         1.477e+01   0.782
## top_herowreckingBall:best.offensiveAssistsMostInGame    8.944e+00  -1.926
## top_herozarya:best.offensiveAssistsMostInGame           8.614e+00  -1.813
## top_herozenyatta:best.offensiveAssistsMostInGame        6.874e+00  -1.305
## top_heroana:average.objectiveTimeAvgPer10Min            3.001e+00  -1.216
## top_heroashe:average.objectiveTimeAvgPer10Min           4.685e+00  -0.916
## top_herobaptiste:average.objectiveTimeAvgPer10Min       3.486e+00  -0.554
## top_herobastion:average.objectiveTimeAvgPer10Min        5.460e+00  -0.169
## top_herobrigitte:average.objectiveTimeAvgPer10Min       3.170e+00   0.436
## top_herodoomfist:average.objectiveTimeAvgPer10Min       9.387e+00   0.068
## top_herodVa:average.objectiveTimeAvgPer10Min            2.319e+00  -1.701
## top_herogenji:average.objectiveTimeAvgPer10Min          3.534e+00  -0.538
## top_herohanzo:average.objectiveTimeAvgPer10Min          5.065e+00  -0.286
## top_herojunkrat:average.objectiveTimeAvgPer10Min        3.807e+00   0.480
## top_herolucio:average.objectiveTimeAvgPer10Min          2.270e+00  -0.047
## top_heromccree:average.objectiveTimeAvgPer10Min         3.496e+00  -1.018
## top_heromei:average.objectiveTimeAvgPer10Min            5.931e+00  -0.080
## top_heromercy:average.objectiveTimeAvgPer10Min          2.657e+00  -0.848
## top_heromoira:average.objectiveTimeAvgPer10Min          2.434e+00  -1.878
## top_heroorisa:average.objectiveTimeAvgPer10Min          2.332e+00   0.978
## top_heropharah:average.objectiveTimeAvgPer10Min         1.111e+01   2.458
## top_heroreaper:average.objectiveTimeAvgPer10Min         4.471e+00   1.103
## top_heroroadhog:average.objectiveTimeAvgPer10Min        2.822e+00  -1.292
## top_herosoldier76:average.objectiveTimeAvgPer10Min      5.580e+00  -0.548
## top_herosombra:average.objectiveTimeAvgPer10Min         6.892e+00  -0.111
## top_herosymmetra:average.objectiveTimeAvgPer10Min       7.213e+00  -1.183
## top_herotorbjorn:average.objectiveTimeAvgPer10Min       8.248e+00  -0.811
## top_herotracer:average.objectiveTimeAvgPer10Min         5.231e+00  -1.739
## top_herowidowmaker:average.objectiveTimeAvgPer10Min     4.542e+00  -0.638
## top_herowinston:average.objectiveTimeAvgPer10Min        9.922e+00   0.749
## top_herowreckingBall:average.objectiveTimeAvgPer10Min   3.235e+00  -2.289
## top_herozarya:average.objectiveTimeAvgPer10Min          2.806e+00  -1.935
## top_herozenyatta:average.objectiveTimeAvgPer10Min       3.423e+00  -3.033
## top_heroana:average.allDamageDoneAvgPer10Min            3.928e-02  -1.604
## top_heroashe:average.allDamageDoneAvgPer10Min           4.076e-02  -1.260
## top_herobaptiste:average.allDamageDoneAvgPer10Min       4.445e-02   0.409
## top_herobastion:average.allDamageDoneAvgPer10Min        3.980e-02  -1.730
## top_herobrigitte:average.allDamageDoneAvgPer10Min       4.284e-02   0.514
## top_herodoomfist:average.allDamageDoneAvgPer10Min       6.996e-02   2.133
## top_herodVa:average.allDamageDoneAvgPer10Min            3.142e-02  -0.067
## top_herogenji:average.allDamageDoneAvgPer10Min          3.808e-02   2.530
## top_herohanzo:average.allDamageDoneAvgPer10Min          4.101e-02   1.561
## top_herojunkrat:average.allDamageDoneAvgPer10Min        3.385e-02   0.187
## top_herolucio:average.allDamageDoneAvgPer10Min          3.368e-02  -0.993
## top_heromccree:average.allDamageDoneAvgPer10Min         3.406e-02  -0.809
## top_heromei:average.allDamageDoneAvgPer10Min            5.955e-02  -0.959
## top_heromercy:average.allDamageDoneAvgPer10Min          3.748e-02  -1.909
## top_heromoira:average.allDamageDoneAvgPer10Min          2.894e-02  -2.306
## top_heroorisa:average.allDamageDoneAvgPer10Min          2.786e-02   0.220
## top_heropharah:average.allDamageDoneAvgPer10Min         6.887e-02  -0.535
## top_heroreaper:average.allDamageDoneAvgPer10Min         3.534e-02  -0.354
## top_heroroadhog:average.allDamageDoneAvgPer10Min        2.934e-02   0.137
## top_herosoldier76:average.allDamageDoneAvgPer10Min      4.399e-02  -0.666
## top_herosombra:average.allDamageDoneAvgPer10Min         6.543e-02  -0.301
## top_herosymmetra:average.allDamageDoneAvgPer10Min       6.756e-02  -1.112
## top_herotorbjorn:average.allDamageDoneAvgPer10Min       5.400e-02   0.245
## top_herotracer:average.allDamageDoneAvgPer10Min         5.872e-02  -0.253
## top_herowidowmaker:average.allDamageDoneAvgPer10Min     4.265e-02   2.319
## top_herowinston:average.allDamageDoneAvgPer10Min        1.075e-01   1.733
## top_herowreckingBall:average.allDamageDoneAvgPer10Min   5.646e-02  -0.353
## top_herozarya:average.allDamageDoneAvgPer10Min          3.578e-02   1.108
## top_herozenyatta:average.allDamageDoneAvgPer10Min       3.816e-02   0.496
## top_heroana:average.objectiveKillsAvgPer10Min           5.034e+01  -0.299
## top_heroashe:average.objectiveKillsAvgPer10Min          5.854e+01   0.209
## top_herobaptiste:average.objectiveKillsAvgPer10Min      5.265e+01  -0.762
## top_herobastion:average.objectiveKillsAvgPer10Min       6.479e+01   1.013
## top_herobrigitte:average.objectiveKillsAvgPer10Min      5.967e+01  -1.569
## top_herodoomfist:average.objectiveKillsAvgPer10Min      1.344e+02  -2.019
## top_herodVa:average.objectiveKillsAvgPer10Min           3.924e+01  -0.008
## top_herogenji:average.objectiveKillsAvgPer10Min         5.933e+01  -1.701
## top_herohanzo:average.objectiveKillsAvgPer10Min         5.726e+01  -1.624
## top_herojunkrat:average.objectiveKillsAvgPer10Min       4.308e+01  -0.306
## top_herolucio:average.objectiveKillsAvgPer10Min         3.748e+01  -2.072
## top_heromccree:average.objectiveKillsAvgPer10Min        4.184e+01   0.102
## top_heromei:average.objectiveKillsAvgPer10Min           7.045e+01   0.333
## top_heromercy:average.objectiveKillsAvgPer10Min         4.579e+01  -0.746
## top_heromoira:average.objectiveKillsAvgPer10Min         3.173e+01   1.532
## top_heroorisa:average.objectiveKillsAvgPer10Min         3.911e+01  -0.979
## top_heropharah:average.objectiveKillsAvgPer10Min        6.578e+01  -1.760
## top_heroreaper:average.objectiveKillsAvgPer10Min        5.265e+01  -1.140
## top_heroroadhog:average.objectiveKillsAvgPer10Min       4.099e+01  -0.012
## top_herosoldier76:average.objectiveKillsAvgPer10Min     6.376e+01  -1.090
## top_herosombra:average.objectiveKillsAvgPer10Min        8.660e+01  -0.302
## top_herosymmetra:average.objectiveKillsAvgPer10Min      6.259e+01  -0.248
## top_herotorbjorn:average.objectiveKillsAvgPer10Min      7.908e+01  -0.287
## top_herotracer:average.objectiveKillsAvgPer10Min        6.257e+01   1.433
## top_herowidowmaker:average.objectiveKillsAvgPer10Min    5.594e+01  -1.398
## top_herowinston:average.objectiveKillsAvgPer10Min       1.275e+02  -1.297
## top_herowreckingBall:average.objectiveKillsAvgPer10Min  5.481e+01  -0.041
## top_herozarya:average.objectiveKillsAvgPer10Min         3.718e+01   0.990
## top_herozenyatta:average.objectiveKillsAvgPer10Min      5.215e+01   1.275
## top_heroana:games_played                                6.116e-01  -0.495
## top_heroashe:games_played                               7.390e-01   0.314
## top_herobaptiste:games_played                           8.498e-01   0.898
## top_herobastion:games_played                            1.339e+00   2.172
## top_herobrigitte:games_played                           1.291e+00   0.675
## top_herodoomfist:games_played                           8.557e-01   1.193
## top_herodVa:games_played                                5.989e-01   1.065
## top_herogenji:games_played                              5.130e-01   0.380
## top_herohanzo:games_played                              6.463e-01   1.097
## top_herojunkrat:games_played                            7.814e-01   0.081
## top_herolucio:games_played                              5.051e-01  -0.276
## top_heromccree:games_played                             5.570e-01   1.818
## top_heromei:games_played                                1.348e+00   0.909
## top_heromercy:games_played                              4.570e-01   2.539
## top_heromoira:games_played                              4.476e-01   2.514
## top_heroorisa:games_played                              4.968e-01   1.338
## top_heropharah:games_played                             2.014e+00   1.020
## top_heroreaper:games_played                             7.564e-01   0.755
## top_heroroadhog:games_played                            4.970e-01   0.362
## top_herosoldier76:games_played                          7.562e-01  -1.302
## top_herosombra:games_played                             1.145e+00   1.537
## top_herosymmetra:games_played                           1.177e+00  -0.791
## top_herotorbjorn:games_played                           1.043e+00   1.367
## top_herotracer:games_played                             9.252e-01   0.140
## top_herowidowmaker:games_played                         8.665e-01   0.901
## top_herowinston:games_played                            1.070e+00   1.569
## top_herowreckingBall:games_played                       6.255e-01   2.304
## top_herozarya:games_played                              6.734e-01  -0.362
## top_herozenyatta:games_played                           7.331e-01   0.621
##                                                        Pr(>|t|)    
## (Intercept)                                             < 2e-16 ***
## top_heroana                                            0.000146 ***
## top_heroashe                                           0.102839    
## top_herobaptiste                                       0.355311    
## top_herobastion                                        0.529623    
## top_herobrigitte                                       0.237567    
## top_herodoomfist                                       0.404261    
## top_herodVa                                            0.743319    
## top_herogenji                                          0.918699    
## top_herohanzo                                          0.970247    
## top_herojunkrat                                        0.554770    
## top_herolucio                                          0.005191 ** 
## top_heromccree                                         0.101364    
## top_heromei                                            0.982361    
## top_heromercy                                          0.004775 ** 
## top_heromoira                                          0.029625 *  
## top_heroorisa                                          0.452792    
## top_heropharah                                         0.646232    
## top_heroreaper                                         0.613957    
## top_heroroadhog                                        0.789221    
## top_herosoldier76                                      0.059446 .  
## top_herosombra                                         0.466961    
## top_herosymmetra                                       0.036381 *  
## top_herotorbjorn                                       0.779305    
## top_herotracer                                         0.694518    
## top_herowidowmaker                                     0.622743    
## top_herowinston                                        0.277067    
## top_herowreckingBall                                   0.076165 .  
## top_herozarya                                          0.674966    
## top_herozenyatta                                       0.927802    
## best.meleeFinalBlowsMostInGame                         0.073168 .  
## best.offensiveAssistsMostInGame                        0.003393 ** 
## average.objectiveTimeAvgPer10Min                       0.087038 .  
## average.allDamageDoneAvgPer10Min                       3.02e-08 ***
## average.objectiveKillsAvgPer10Min                      0.003700 ** 
## games_played                                           0.514609    
## top_heroana:best.meleeFinalBlowsMostInGame             0.238130    
## top_heroashe:best.meleeFinalBlowsMostInGame            0.872871    
## top_herobaptiste:best.meleeFinalBlowsMostInGame        0.415747    
## top_herobastion:best.meleeFinalBlowsMostInGame         0.058167 .  
## top_herobrigitte:best.meleeFinalBlowsMostInGame        0.153478    
## top_herodoomfist:best.meleeFinalBlowsMostInGame        0.673106    
## top_herodVa:best.meleeFinalBlowsMostInGame             0.550494    
## top_herogenji:best.meleeFinalBlowsMostInGame           0.237692    
## top_herohanzo:best.meleeFinalBlowsMostInGame           0.681478    
## top_herojunkrat:best.meleeFinalBlowsMostInGame         0.380602    
## top_herolucio:best.meleeFinalBlowsMostInGame           0.819853    
## top_heromccree:best.meleeFinalBlowsMostInGame          0.135088    
## top_heromei:best.meleeFinalBlowsMostInGame             0.885524    
## top_heromercy:best.meleeFinalBlowsMostInGame           0.102646    
## top_heromoira:best.meleeFinalBlowsMostInGame           0.247532    
## top_heroorisa:best.meleeFinalBlowsMostInGame           0.005070 ** 
## top_heropharah:best.meleeFinalBlowsMostInGame          0.847315    
## top_heroreaper:best.meleeFinalBlowsMostInGame          0.486606    
## top_heroroadhog:best.meleeFinalBlowsMostInGame         0.634433    
## top_herosoldier76:best.meleeFinalBlowsMostInGame       0.918024    
## top_herosombra:best.meleeFinalBlowsMostInGame          0.019431 *  
## top_herosymmetra:best.meleeFinalBlowsMostInGame        0.126394    
## top_herotorbjorn:best.meleeFinalBlowsMostInGame        0.914220    
## top_herotracer:best.meleeFinalBlowsMostInGame          0.334878    
## top_herowidowmaker:best.meleeFinalBlowsMostInGame      0.437841    
## top_herowinston:best.meleeFinalBlowsMostInGame         0.227541    
## top_herowreckingBall:best.meleeFinalBlowsMostInGame    0.847933    
## top_herozarya:best.meleeFinalBlowsMostInGame           0.793446    
## top_herozenyatta:best.meleeFinalBlowsMostInGame        0.001664 ** 
## top_heroana:best.offensiveAssistsMostInGame            0.761862    
## top_heroashe:best.offensiveAssistsMostInGame           0.813546    
## top_herobaptiste:best.offensiveAssistsMostInGame       0.197933    
## top_herobastion:best.offensiveAssistsMostInGame        0.181854    
## top_herobrigitte:best.offensiveAssistsMostInGame       0.168574    
## top_herodoomfist:best.offensiveAssistsMostInGame       0.598855    
## top_herodVa:best.offensiveAssistsMostInGame            0.779150    
## top_herogenji:best.offensiveAssistsMostInGame          0.947580    
## top_herohanzo:best.offensiveAssistsMostInGame          0.279300    
## top_herojunkrat:best.offensiveAssistsMostInGame        0.340346    
## top_herolucio:best.offensiveAssistsMostInGame          0.428529    
## top_heromccree:best.offensiveAssistsMostInGame         0.499927    
## top_heromei:best.offensiveAssistsMostInGame            0.852911    
## top_heromercy:best.offensiveAssistsMostInGame          0.867398    
## top_heromoira:best.offensiveAssistsMostInGame          0.089256 .  
## top_heroorisa:best.offensiveAssistsMostInGame          0.900647    
## top_heropharah:best.offensiveAssistsMostInGame         0.638247    
## top_heroreaper:best.offensiveAssistsMostInGame         0.818668    
## top_heroroadhog:best.offensiveAssistsMostInGame        0.123595    
## top_herosoldier76:best.offensiveAssistsMostInGame      0.460670    
## top_herosombra:best.offensiveAssistsMostInGame         0.064655 .  
## top_herosymmetra:best.offensiveAssistsMostInGame       0.733620    
## top_herotorbjorn:best.offensiveAssistsMostInGame       0.931402    
## top_herotracer:best.offensiveAssistsMostInGame         0.321486    
## top_herowidowmaker:best.offensiveAssistsMostInGame     0.238827    
## top_herowinston:best.offensiveAssistsMostInGame        0.434375    
## top_herowreckingBall:best.offensiveAssistsMostInGame   0.054177 .  
## top_herozarya:best.offensiveAssistsMostInGame          0.069911 .  
## top_herozenyatta:best.offensiveAssistsMostInGame       0.191924    
## top_heroana:average.objectiveTimeAvgPer10Min           0.224214    
## top_heroashe:average.objectiveTimeAvgPer10Min          0.359589    
## top_herobaptiste:average.objectiveTimeAvgPer10Min      0.579347    
## top_herobastion:average.objectiveTimeAvgPer10Min       0.865478    
## top_herobrigitte:average.objectiveTimeAvgPer10Min      0.662727    
## top_herodoomfist:average.objectiveTimeAvgPer10Min      0.945644    
## top_herodVa:average.objectiveTimeAvgPer10Min           0.089037 .  
## top_herogenji:average.objectiveTimeAvgPer10Min         0.590676    
## top_herohanzo:average.objectiveTimeAvgPer10Min         0.775236    
## top_herojunkrat:average.objectiveTimeAvgPer10Min       0.631494    
## top_herolucio:average.objectiveTimeAvgPer10Min         0.962132    
## top_heromccree:average.objectiveTimeAvgPer10Min        0.308974    
## top_heromei:average.objectiveTimeAvgPer10Min           0.936532    
## top_heromercy:average.objectiveTimeAvgPer10Min         0.396612    
## top_heromoira:average.objectiveTimeAvgPer10Min         0.060487 .  
## top_heroorisa:average.objectiveTimeAvgPer10Min         0.327948    
## top_heropharah:average.objectiveTimeAvgPer10Min        0.014047 *  
## top_heroreaper:average.objectiveTimeAvgPer10Min        0.270368    
## top_heroroadhog:average.objectiveTimeAvgPer10Min       0.196617    
## top_herosoldier76:average.objectiveTimeAvgPer10Min     0.583456    
## top_herosombra:average.objectiveTimeAvgPer10Min        0.911960    
## top_herosymmetra:average.objectiveTimeAvgPer10Min      0.236973    
## top_herotorbjorn:average.objectiveTimeAvgPer10Min      0.417431    
## top_herotracer:average.objectiveTimeAvgPer10Min        0.082229 .  
## top_herowidowmaker:average.objectiveTimeAvgPer10Min    0.523628    
## top_herowinston:average.objectiveTimeAvgPer10Min       0.453770    
## top_herowreckingBall:average.objectiveTimeAvgPer10Min  0.022168 *  
## top_herozarya:average.objectiveTimeAvgPer10Min         0.053156 .  
## top_herozenyatta:average.objectiveTimeAvgPer10Min      0.002450 ** 
## top_heroana:average.allDamageDoneAvgPer10Min           0.108870    
## top_heroashe:average.allDamageDoneAvgPer10Min          0.207802    
## top_herobaptiste:average.allDamageDoneAvgPer10Min      0.682654    
## top_herobastion:average.allDamageDoneAvgPer10Min       0.083731 .  
## top_herobrigitte:average.allDamageDoneAvgPer10Min      0.607428    
## top_herodoomfist:average.allDamageDoneAvgPer10Min      0.033064 *  
## top_herodVa:average.allDamageDoneAvgPer10Min           0.946383    
## top_herogenji:average.allDamageDoneAvgPer10Min         0.011483 *  
## top_herohanzo:average.allDamageDoneAvgPer10Min         0.118781    
## top_herojunkrat:average.allDamageDoneAvgPer10Min       0.851325    
## top_herolucio:average.allDamageDoneAvgPer10Min         0.320625    
## top_heromccree:average.allDamageDoneAvgPer10Min        0.418617    
## top_heromei:average.allDamageDoneAvgPer10Min           0.337624    
## top_heromercy:average.allDamageDoneAvgPer10Min         0.056417 .  
## top_heromoira:average.allDamageDoneAvgPer10Min         0.021222 *  
## top_heroorisa:average.allDamageDoneAvgPer10Min         0.825919    
## top_heropharah:average.allDamageDoneAvgPer10Min        0.592833    
## top_heroreaper:average.allDamageDoneAvgPer10Min        0.723484    
## top_heroroadhog:average.allDamageDoneAvgPer10Min       0.890825    
## top_herosoldier76:average.allDamageDoneAvgPer10Min     0.505355    
## top_herosombra:average.allDamageDoneAvgPer10Min        0.763612    
## top_herosymmetra:average.allDamageDoneAvgPer10Min      0.266107    
## top_herotorbjorn:average.allDamageDoneAvgPer10Min      0.806107    
## top_herotracer:average.allDamageDoneAvgPer10Min        0.800340    
## top_herowidowmaker:average.allDamageDoneAvgPer10Min    0.020508 *  
## top_herowinston:average.allDamageDoneAvgPer10Min       0.083296 .  
## top_herowreckingBall:average.allDamageDoneAvgPer10Min  0.724279    
## top_herozarya:average.allDamageDoneAvgPer10Min         0.268104    
## top_herozenyatta:average.allDamageDoneAvgPer10Min      0.620097    
## top_heroana:average.objectiveKillsAvgPer10Min          0.765001    
## top_heroashe:average.objectiveKillsAvgPer10Min         0.834350    
## top_herobaptiste:average.objectiveKillsAvgPer10Min     0.445960    
## top_herobastion:average.objectiveKillsAvgPer10Min      0.311166    
## top_herobrigitte:average.objectiveKillsAvgPer10Min     0.116701    
## top_herodoomfist:average.objectiveKillsAvgPer10Min     0.043596 *  
## top_herodVa:average.objectiveKillsAvgPer10Min          0.993895    
## top_herogenji:average.objectiveKillsAvgPer10Min        0.089166 .  
## top_herohanzo:average.objectiveKillsAvgPer10Min        0.104570    
## top_herojunkrat:average.objectiveKillsAvgPer10Min      0.759870    
## top_herolucio:average.objectiveKillsAvgPer10Min        0.038422 *  
## top_heromccree:average.objectiveKillsAvgPer10Min       0.919118    
## top_heromei:average.objectiveKillsAvgPer10Min          0.738829    
## top_heromercy:average.objectiveKillsAvgPer10Min        0.455465    
## top_heromoira:average.objectiveKillsAvgPer10Min        0.125641    
## top_heroorisa:average.objectiveKillsAvgPer10Min        0.327512    
## top_heropharah:average.objectiveKillsAvgPer10Min       0.078510 .  
## top_heroreaper:average.objectiveKillsAvgPer10Min       0.254399    
## top_heroroadhog:average.objectiveKillsAvgPer10Min      0.990792    
## top_herosoldier76:average.objectiveKillsAvgPer10Min    0.275814    
## top_herosombra:average.objectiveKillsAvgPer10Min       0.762391    
## top_herosymmetra:average.objectiveKillsAvgPer10Min     0.804231    
## top_herotorbjorn:average.objectiveKillsAvgPer10Min     0.774228    
## top_herotracer:average.objectiveKillsAvgPer10Min       0.151872    
## top_herowidowmaker:average.objectiveKillsAvgPer10Min   0.162164    
## top_herowinston:average.objectiveKillsAvgPer10Min      0.194669    
## top_herowreckingBall:average.objectiveKillsAvgPer10Min 0.967653    
## top_herozarya:average.objectiveKillsAvgPer10Min        0.322291    
## top_herozenyatta:average.objectiveKillsAvgPer10Min     0.202441    
## top_heroana:games_played                               0.620527    
## top_heroashe:games_played                              0.753814    
## top_herobaptiste:games_played                          0.369084    
## top_herobastion:games_played                           0.029988 *  
## top_herobrigitte:games_played                          0.499827    
## top_herodoomfist:games_played                          0.233113    
## top_herodVa:games_played                               0.286837    
## top_herogenji:games_played                             0.703824    
## top_herohanzo:games_played                             0.272910    
## top_herojunkrat:games_played                           0.935103    
## top_herolucio:games_played                             0.782757    
## top_heromccree:games_played                            0.069215 .  
## top_heromei:games_played                               0.363590    
## top_heromercy:games_played                             0.011183 *  
## top_heromoira:games_played                             0.012003 *  
## top_heroorisa:games_played                             0.181198    
## top_heropharah:games_played                            0.307948    
## top_heroreaper:games_played                            0.450563    
## top_heroroadhog:games_played                           0.717265    
## top_herosoldier76:games_played                         0.193025    
## top_herosombra:games_played                            0.124411    
## top_herosymmetra:games_played                          0.428800    
## top_herotorbjorn:games_played                          0.171659    
## top_herotracer:games_played                            0.888806    
## top_herowidowmaker:games_played                        0.367603    
## top_herowinston:games_played                           0.116777    
## top_herowreckingBall:games_played                      0.021309 *  
## top_herozarya:games_played                             0.717664    
## top_herozenyatta:games_played                          0.534503    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 447.3 on 2106 degrees of freedom
## Multiple R-squared:  0.349,  Adjusted R-squared:  0.2844 
## F-statistic: 5.402 on 209 and 2106 DF,  p-value: < 2.2e-16

We wanted a smaller model for better explanatory power so we first tried a backwards search using BIC. However, the adjusted \(R^2\) was lower than the model chosen using a backwards search using AIC.

summary(back_aic)$adj.r.squared
## [1] 0.2631896
summary(back_bic)$adj.r.squared
## [1] 0.2037247

We see here that the model chosen by the AIC backwards search has more explanatory power.

# null model
fit_null = lm(skill_rating ~ 1, data = df)
# model chosen by backwards BIC
fit_full = lm(skill_rating ~ best.meleeFinalBlowsMostInGame + 
    best.offensiveAssistsMostInGame + average.allDamageDoneAvgPer10Min + 
    average.objectiveKillsAvgPer10Min + games_played, 
    data = df)
anova(fit_null, fit_full)
## Analysis of Variance Table
## 
## Model 1: skill_rating ~ 1
## Model 2: skill_rating ~ best.meleeFinalBlowsMostInGame + best.offensiveAssistsMostInGame + 
##     average.allDamageDoneAvgPer10Min + average.objectiveKillsAvgPer10Min + 
##     games_played
##   Res.Df       RSS Df Sum of Sq      F    Pr(>F)    
## 1   2315 647231056                                  
## 2   2310 514260974  5 132970082 119.46 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Here we reject the null hypothesis and confirm that the model chosen by using a backwards search using BIC is significant.

# compare BIC with AIC 
# model chosen by backwards BIC
fit_null = lm(skill_rating ~ best.meleeFinalBlowsMostInGame + 
    best.offensiveAssistsMostInGame + average.allDamageDoneAvgPer10Min + 
    average.objectiveKillsAvgPer10Min + games_played, 
    data = df)
# model chosen by backwards AIC
fit_full = lm(skill_rating ~ top_hero + best.meleeFinalBlowsMostInGame + 
    best.offensiveAssistsMostInGame + average.allDamageDoneAvgPer10Min + 
    average.objectiveKillsAvgPer10Min + games_played + top_hero:average.allDamageDoneAvgPer10Min, 
    data = df)

anova(fit_null, fit_full)
## Analysis of Variance Table
## 
## Model 1: skill_rating ~ best.meleeFinalBlowsMostInGame + best.offensiveAssistsMostInGame + 
##     average.allDamageDoneAvgPer10Min + average.objectiveKillsAvgPer10Min + 
##     games_played
## Model 2: skill_rating ~ top_hero + best.meleeFinalBlowsMostInGame + best.offensiveAssistsMostInGame + 
##     average.allDamageDoneAvgPer10Min + average.objectiveKillsAvgPer10Min + 
##     games_played + top_hero:average.allDamageDoneAvgPer10Min
##   Res.Df       RSS Df Sum of Sq      F    Pr(>F)    
## 1   2310 514260974                                  
## 2   2252 463908678 58  50352296 4.2143 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Again, we reject the null hypothesis and confirm that the addition of the interaction predictor top_hero:average.allDamageDoneAvgPer10Min to the model is significant (the model chosen by backwards AIC).

Results

We use 2 ANOVA tests to confirm that our final model is the best.

# null model
fit_null = lm(skill_rating ~ 1, data = df)
# model chosen by backwards BIC
fit_full = lm(skill_rating ~ best.meleeFinalBlowsMostInGame + 
    best.offensiveAssistsMostInGame + average.allDamageDoneAvgPer10Min + 
    average.objectiveKillsAvgPer10Min + games_played, 
    data = df)
anova(fit_null, fit_full)
## Analysis of Variance Table
## 
## Model 1: skill_rating ~ 1
## Model 2: skill_rating ~ best.meleeFinalBlowsMostInGame + best.offensiveAssistsMostInGame + 
##     average.allDamageDoneAvgPer10Min + average.objectiveKillsAvgPer10Min + 
##     games_played
##   Res.Df       RSS Df Sum of Sq      F    Pr(>F)    
## 1   2315 647231056                                  
## 2   2310 514260974  5 132970082 119.46 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(fit_full)$adj.r.squared
## [1] 0.2037247

Here we reject the null hypothesis and confirm that the model chosen by using a backwards search using BIC is significant.

# compare BIC with AIC 
# model chosen by backwards BIC
fit_null = lm(skill_rating ~ best.meleeFinalBlowsMostInGame + 
    best.offensiveAssistsMostInGame + average.allDamageDoneAvgPer10Min + 
    average.objectiveKillsAvgPer10Min + games_played, 
    data = df)
# model chosen by backwards AIC
fit_full = lm(skill_rating ~ top_hero + best.meleeFinalBlowsMostInGame + 
    best.offensiveAssistsMostInGame + average.allDamageDoneAvgPer10Min + 
    average.objectiveKillsAvgPer10Min + games_played + top_hero:average.allDamageDoneAvgPer10Min, 
    data = df)
anova(fit_null, fit_full)
## Analysis of Variance Table
## 
## Model 1: skill_rating ~ best.meleeFinalBlowsMostInGame + best.offensiveAssistsMostInGame + 
##     average.allDamageDoneAvgPer10Min + average.objectiveKillsAvgPer10Min + 
##     games_played
## Model 2: skill_rating ~ top_hero + best.meleeFinalBlowsMostInGame + best.offensiveAssistsMostInGame + 
##     average.allDamageDoneAvgPer10Min + average.objectiveKillsAvgPer10Min + 
##     games_played + top_hero:average.allDamageDoneAvgPer10Min
##   Res.Df       RSS Df Sum of Sq      F    Pr(>F)    
## 1   2310 514260974                                  
## 2   2252 463908678 58  50352296 4.2143 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(fit_full)$adj.r.squared
## [1] 0.2631896

Again, we reject the null hypothesis and confirm that the addition of the interaction predictor top_hero:average.allDamageDoneAvgPer10Min to the model is significant (the model chosen by backwards AIC).

The model chosen by AIC has a higher \(R^2\) than the model chosen using BIC. Therefore, our best model is the one chosen by AIC. We’ll now check the assumptions of the model to make sure we can trust the hypothesis tests since we’re interested in finding out what variables best explain skill_rating and how they affect skill_rating.

fit_final = lm(formula = skill_rating ~ top_hero + best.meleeFinalBlowsMostInGame + 
    best.offensiveAssistsMostInGame + average.allDamageDoneAvgPer10Min + 
    average.objectiveKillsAvgPer10Min + games_played + top_hero:average.allDamageDoneAvgPer10Min, 
    data = df_final)

summary(fit_final)
## 
## Call:
## lm(formula = skill_rating ~ top_hero + best.meleeFinalBlowsMostInGame + 
##     best.offensiveAssistsMostInGame + average.allDamageDoneAvgPer10Min + 
##     average.objectiveKillsAvgPer10Min + games_played + top_hero:average.allDamageDoneAvgPer10Min, 
##     data = df_final)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1536.3  -289.1    -7.7   275.6  1926.7 
## 
## Coefficients:
##                                                         Estimate
## (Intercept)                                            1.942e+03
## top_heroana                                            6.523e+02
## top_heroashe                                           5.729e+02
## top_herobaptiste                                       2.608e+02
## top_herobastion                                        1.824e+01
## top_herobrigitte                                       2.375e+02
## top_herodoomfist                                      -5.571e+02
## top_herodVa                                           -1.588e+02
## top_herogenji                                         -6.747e+02
## top_herohanzo                                         -2.620e+02
## top_herojunkrat                                       -4.470e+02
## top_herolucio                                          5.892e+02
## top_heromccree                                         3.626e+02
## top_heromei                                            2.393e+01
## top_heromercy                                          6.269e+02
## top_heromoira                                          5.574e+02
## top_heroorisa                                         -2.496e+02
## top_heropharah                                        -3.201e+02
## top_heroreaper                                         2.132e+02
## top_heroroadhog                                       -1.475e+02
## top_herosoldier76                                      2.511e+02
## top_herosombra                                        -2.677e+02
## top_herosymmetra                                       5.790e+02
## top_herotorbjorn                                      -3.373e+02
## top_herotracer                                        -4.960e+02
## top_herowidowmaker                                    -6.347e+02
## top_herowinston                                       -3.512e+02
## top_herowreckingBall                                   1.134e+02
## top_herozarya                                         -4.535e+02
## top_herozenyatta                                      -2.921e+02
## best.meleeFinalBlowsMostInGame                         5.395e+01
## best.offensiveAssistsMostInGame                        1.000e+01
## average.allDamageDoneAvgPer10Min                       1.097e-01
## average.objectiveKillsAvgPer10Min                     -7.924e+01
## games_played                                           3.411e-01
## top_heroana:average.allDamageDoneAvgPer10Min          -8.339e-02
## top_heroashe:average.allDamageDoneAvgPer10Min         -5.207e-02
## top_herobaptiste:average.allDamageDoneAvgPer10Min     -8.574e-03
## top_herobastion:average.allDamageDoneAvgPer10Min      -3.795e-02
## top_herobrigitte:average.allDamageDoneAvgPer10Min     -1.272e-02
## top_herodoomfist:average.allDamageDoneAvgPer10Min      5.079e-02
## top_herodVa:average.allDamageDoneAvgPer10Min          -8.625e-03
## top_herogenji:average.allDamageDoneAvgPer10Min         6.103e-02
## top_herohanzo:average.allDamageDoneAvgPer10Min         1.990e-02
## top_herojunkrat:average.allDamageDoneAvgPer10Min       9.355e-03
## top_herolucio:average.allDamageDoneAvgPer10Min        -6.996e-02
## top_heromccree:average.allDamageDoneAvgPer10Min       -3.874e-02
## top_heromei:average.allDamageDoneAvgPer10Min          -2.778e-02
## top_heromercy:average.allDamageDoneAvgPer10Min        -7.673e-02
## top_heromoira:average.allDamageDoneAvgPer10Min        -5.117e-02
## top_heroorisa:average.allDamageDoneAvgPer10Min         1.903e-02
## top_heropharah:average.allDamageDoneAvgPer10Min        1.528e-02
## top_heroreaper:average.allDamageDoneAvgPer10Min       -2.993e-02
## top_heroroadhog:average.allDamageDoneAvgPer10Min       9.379e-03
## top_herosoldier76:average.allDamageDoneAvgPer10Min    -4.639e-02
## top_herosombra:average.allDamageDoneAvgPer10Min        3.643e-02
## top_herosymmetra:average.allDamageDoneAvgPer10Min     -6.317e-02
## top_herotorbjorn:average.allDamageDoneAvgPer10Min      1.778e-02
## top_herotracer:average.allDamageDoneAvgPer10Min        4.088e-02
## top_herowidowmaker:average.allDamageDoneAvgPer10Min    8.081e-02
## top_herowinston:average.allDamageDoneAvgPer10Min       7.524e-02
## top_herowreckingBall:average.allDamageDoneAvgPer10Min -2.036e-02
## top_herozarya:average.allDamageDoneAvgPer10Min         5.781e-02
## top_herozenyatta:average.allDamageDoneAvgPer10Min      2.948e-02
##                                                       Std. Error t value
## (Intercept)                                            1.499e+02  12.951
## top_heroana                                            2.191e+02   2.977
## top_heroashe                                           4.089e+02   1.401
## top_herobaptiste                                       2.477e+02   1.053
## top_herobastion                                        3.514e+02   0.052
## top_herobrigitte                                       2.743e+02   0.866
## top_herodoomfist                                       5.132e+02  -1.085
## top_herodVa                                            2.463e+02  -0.645
## top_herogenji                                          3.127e+02  -2.158
## top_herohanzo                                          3.012e+02  -0.870
## top_herojunkrat                                        2.880e+02  -1.552
## top_herolucio                                          2.186e+02   2.696
## top_heromccree                                         2.876e+02   1.261
## top_heromei                                            4.051e+02   0.059
## top_heromercy                                          1.688e+02   3.713
## top_heromoira                                          1.960e+02   2.845
## top_heroorisa                                          2.455e+02  -1.017
## top_heropharah                                         5.328e+02  -0.601
## top_heroreaper                                         3.089e+02   0.690
## top_heroroadhog                                        2.408e+02  -0.613
## top_herosoldier76                                      3.860e+02   0.651
## top_herosombra                                         4.351e+02  -0.615
## top_herosymmetra                                       4.843e+02   1.195
## top_herotorbjorn                                       5.121e+02  -0.659
## top_herotracer                                         4.748e+02  -1.045
## top_herowidowmaker                                     3.531e+02  -1.797
## top_herowinston                                        6.451e+02  -0.544
## top_herowreckingBall                                   3.872e+02   0.293
## top_herozarya                                          3.105e+02  -1.461
## top_herozenyatta                                       2.793e+02  -1.046
## best.meleeFinalBlowsMostInGame                         8.508e+00   6.340
## best.offensiveAssistsMostInGame                        1.211e+00   8.259
## average.allDamageDoneAvgPer10Min                       1.690e-02   6.490
## average.objectiveKillsAvgPer10Min                      6.110e+00 -12.969
## games_played                                           1.003e-01   3.402
## top_heroana:average.allDamageDoneAvgPer10Min           2.858e-02  -2.918
## top_heroashe:average.allDamageDoneAvgPer10Min          3.866e-02  -1.347
## top_herobaptiste:average.allDamageDoneAvgPer10Min      3.143e-02  -0.273
## top_herobastion:average.allDamageDoneAvgPer10Min       3.137e-02  -1.210
## top_herobrigitte:average.allDamageDoneAvgPer10Min      3.729e-02  -0.341
## top_herodoomfist:average.allDamageDoneAvgPer10Min      5.305e-02   0.957
## top_herodVa:average.allDamageDoneAvgPer10Min           2.653e-02  -0.325
## top_herogenji:average.allDamageDoneAvgPer10Min         3.160e-02   1.931
## top_herohanzo:average.allDamageDoneAvgPer10Min         2.914e-02   0.683
## top_herojunkrat:average.allDamageDoneAvgPer10Min       2.783e-02   0.336
## top_herolucio:average.allDamageDoneAvgPer10Min         2.846e-02  -2.458
## top_heromccree:average.allDamageDoneAvgPer10Min        2.869e-02  -1.350
## top_heromei:average.allDamageDoneAvgPer10Min           4.594e-02  -0.605
## top_heromercy:average.allDamageDoneAvgPer10Min         2.342e-02  -3.277
## top_heromoira:average.allDamageDoneAvgPer10Min         2.513e-02  -2.036
## top_heroorisa:average.allDamageDoneAvgPer10Min         2.543e-02   0.748
## top_heropharah:average.allDamageDoneAvgPer10Min        5.219e-02   0.293
## top_heroreaper:average.allDamageDoneAvgPer10Min        3.080e-02  -0.972
## top_heroroadhog:average.allDamageDoneAvgPer10Min       2.488e-02   0.377
## top_herosoldier76:average.allDamageDoneAvgPer10Min     3.640e-02  -1.274
## top_herosombra:average.allDamageDoneAvgPer10Min        4.892e-02   0.745
## top_herosymmetra:average.allDamageDoneAvgPer10Min      5.276e-02  -1.197
## top_herotorbjorn:average.allDamageDoneAvgPer10Min      4.749e-02   0.374
## top_herotracer:average.allDamageDoneAvgPer10Min        4.936e-02   0.828
## top_herowidowmaker:average.allDamageDoneAvgPer10Min    3.685e-02   2.193
## top_herowinston:average.allDamageDoneAvgPer10Min       8.000e-02   0.940
## top_herowreckingBall:average.allDamageDoneAvgPer10Min  4.300e-02  -0.473
## top_herozarya:average.allDamageDoneAvgPer10Min         3.291e-02   1.756
## top_herozenyatta:average.allDamageDoneAvgPer10Min      3.277e-02   0.899
##                                                       Pr(>|t|)    
## (Intercept)                                            < 2e-16 ***
## top_heroana                                           0.002940 ** 
## top_heroashe                                          0.161295    
## top_herobaptiste                                      0.292535    
## top_herobastion                                       0.958602    
## top_herobrigitte                                      0.386581    
## top_herodoomfist                                      0.277822    
## top_herodVa                                           0.519279    
## top_herogenji                                         0.031062 *  
## top_herohanzo                                         0.384331    
## top_herojunkrat                                       0.120872    
## top_herolucio                                         0.007077 ** 
## top_heromccree                                        0.207522    
## top_heromei                                           0.952895    
## top_heromercy                                         0.000210 ***
## top_heromoira                                         0.004488 ** 
## top_heroorisa                                         0.309311    
## top_heropharah                                        0.548087    
## top_heroreaper                                        0.490084    
## top_heroroadhog                                       0.540110    
## top_herosoldier76                                     0.515382    
## top_herosombra                                        0.538494    
## top_herosymmetra                                      0.232026    
## top_herotorbjorn                                      0.510230    
## top_herotracer                                        0.296210    
## top_herowidowmaker                                    0.072390 .  
## top_herowinston                                       0.586204    
## top_herowreckingBall                                  0.769599    
## top_herozarya                                         0.144281    
## top_herozenyatta                                      0.295848    
## best.meleeFinalBlowsMostInGame                        2.76e-10 ***
## best.offensiveAssistsMostInGame                       2.48e-16 ***
## average.allDamageDoneAvgPer10Min                      1.05e-10 ***
## average.objectiveKillsAvgPer10Min                      < 2e-16 ***
## games_played                                          0.000681 ***
## top_heroana:average.allDamageDoneAvgPer10Min          0.003558 ** 
## top_heroashe:average.allDamageDoneAvgPer10Min         0.178155    
## top_herobaptiste:average.allDamageDoneAvgPer10Min     0.785009    
## top_herobastion:average.allDamageDoneAvgPer10Min      0.226457    
## top_herobrigitte:average.allDamageDoneAvgPer10Min     0.733057    
## top_herodoomfist:average.allDamageDoneAvgPer10Min     0.338433    
## top_herodVa:average.allDamageDoneAvgPer10Min          0.745182    
## top_herogenji:average.allDamageDoneAvgPer10Min        0.053583 .  
## top_herohanzo:average.allDamageDoneAvgPer10Min        0.494725    
## top_herojunkrat:average.allDamageDoneAvgPer10Min      0.736838    
## top_herolucio:average.allDamageDoneAvgPer10Min        0.014037 *  
## top_heromccree:average.allDamageDoneAvgPer10Min       0.177027    
## top_heromei:average.allDamageDoneAvgPer10Min          0.545439    
## top_heromercy:average.allDamageDoneAvgPer10Min        0.001067 ** 
## top_heromoira:average.allDamageDoneAvgPer10Min        0.041891 *  
## top_heroorisa:average.allDamageDoneAvgPer10Min        0.454355    
## top_heropharah:average.allDamageDoneAvgPer10Min       0.769729    
## top_heroreaper:average.allDamageDoneAvgPer10Min       0.331302    
## top_heroroadhog:average.allDamageDoneAvgPer10Min      0.706270    
## top_herosoldier76:average.allDamageDoneAvgPer10Min    0.202624    
## top_herosombra:average.allDamageDoneAvgPer10Min       0.456486    
## top_herosymmetra:average.allDamageDoneAvgPer10Min     0.231317    
## top_herotorbjorn:average.allDamageDoneAvgPer10Min     0.708171    
## top_herotracer:average.allDamageDoneAvgPer10Min       0.407600    
## top_herowidowmaker:average.allDamageDoneAvgPer10Min   0.028427 *  
## top_herowinston:average.allDamageDoneAvgPer10Min      0.347088    
## top_herowreckingBall:average.allDamageDoneAvgPer10Min 0.635930    
## top_herozarya:average.allDamageDoneAvgPer10Min        0.079156 .  
## top_herozenyatta:average.allDamageDoneAvgPer10Min     0.368491    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 453.9 on 2252 degrees of freedom
## Multiple R-squared:  0.2832, Adjusted R-squared:  0.2632 
## F-statistic: 14.13 on 63 and 2252 DF,  p-value: < 2.2e-16
diagnostics(fit_final, alpha = 0.01, testit = FALSE)

par(mfrow=c(1,1))
hist(rstandard(fit_final), main='Histogram of standardized residuals')

sw_final = diagnostics(fit_final, alpha = 0.01, plotit = FALSE)
bp_final = bptest(fit_final)

At the level \(\alpha = 0.05\), we fail to reject the \(H_0\) of the Shapiro-Wilk test and find that the residuals don’t violate the normality assumption, with a \(p-value\) of 0.0507572.

Similarly, at the level \(\alpha = 0.05\), we find evidence that the errors are homoskedastic, failing to reject \(H_0\) for the Breusch-Pagan test, with a \(p-value\) of 0.0781113.

Discussion

So, what should a player who wants to improve their skill rating focus on? We look to our best model to help us.

library(coefplot)
library(dotwhisker)
library(broom)

m1 = tidy(fit_final)

m1 %>% 
  filter(grepl('top_hero', term) & !(grepl('DoneAvgPer10Min', term))) %>% 
  mutate(term = str_replace(term, 'top_hero', '') %>% str_to_title()) %>% 
  dwplot(vline = geom_vline(xintercept = 0, colour = "grey60", linetype = 2)) +
  theme_bw() +
  theme(legend.title = element_blank()) +
  guides(shape='none', colour='none') + 
  labs(x='Coefficients and confidence intervals', caption = 'Omitted hero is Reinhardt') + 
  ggtitle('Effect of Choosing Certain Heroes on Skill Rating')

It’s pretty clear that playing Ana, Mercy, Lucio and Moira are associated with higher skill rating. These four heroes are all support heroes which suggests learning how to be a good support hero on your team is a good way to boost your skill rating.

For example, for players who “main” Ana rather than Reinhardt, that is those who play Ana the most, they have a higher skill_rating. Ana players on average have a 652.3073769 higher skill_rating than players who “main” Reinhardt.

So, if you want to get a higher skill_rating, you should consider playing one the four Support heroes: Ana, Lucio, Mercy or Moira.

Looking at the coefficients for our interaction predictor top_hero:average.allDamageDoneAvgPer10Min we see that top_heroana:average.allDamageDoneAvgPer10Min and top_heromercy:average.allDamageDoneAvgPer10Min are both significant at \(\alpha = 0.01\).

We see that the coefficients for top_heroana:average.allDamageDoneAvgPer10Min: -0.0833897 and top_heromercy:average.allDamageDoneAvgPer10Min: -0.0767349 are both negative. This tells us that doing damage as a support character does not boost your skill rating as much as if you were doing damange as a tank.

We can see this by comparing our coefficients:

Because the top_hero predictor is releveled with Reinhardt (a tank) as the base, we can interpret the above values as such: when playing Reinhardt, the most popular hero, your skill rating benefits more by doing a lot of damage than if you were doing a lot of damage as a Support character (Ana & Mercy).

Now, looking at games_played: 0.3410565, we can see that your skill rating also increases with the number of games you play. Rescaling the coefficient back to it’s orignal units \(e^\beta\) = 1.4064328 we see that your average skill rating goes up by ~1.4064328 points per game played. This makes sense because it is fair to assume that you improve as a player the more you play. Practice always helps!

Summary of findings

Our best model shows that if you want to climb the Overwatch skill leaderboard on Playstation 4, you should:

  • Play Support heroes
  • If you play a Tank, do a lot of damage to opponents, don’t just stand there and protect your teammates. Go on the offensive!
  • Play more games! This is obvious but important to remember. Sometimes you will feel you hit a skill wall and cannot improve. Our model however provides evidence that you should keep going! Play more and your skill_rating should improve.

The next step that could improve this analysis would be to track players’ skill_rating over time and track what changes in variables lead to changes in skill_rating. However, for a first analysis of this data by anyone (to the best of our knowledge), we were able to get a good explanatory model of skill in Overwatch to help players focus their efforts and climb the rankings.